'''
对离散性进行探索性分析
完成人：罗建明
'''
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
file_path = "C:\\Users\\ASUS\\Desktop\\Buildings_finall_handle.csv"
house_data = pd.read_csv(file_path)

# 查看数据前几行以确认列名和数据类型
print(house_data.head())

# 选择几个离散型变量进行分析
discrete_columns = ['区域', '电梯', '产权性质', '住宅类别', '建筑结构', '建筑类别', '楼层', '布局', '朝向', '装修']

# 设置全局字体
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['SimHei']  # 你可以根据需要更改字体
plt.rcParams['font.size'] = 12

# 对每个离散型变量进行频数统计并可视化
for column in discrete_columns:
    counts = house_data[column].value_counts()
    print(f"{column} 频数统计：")
    print(counts)
    print("")

    # 可视化频数统计（条形图）
    if len(counts) > 5:  # 如果类别数量大于5，使用条形图
        counts.plot(kind='bar', color='pink')
        plt.title(f'{column} 频数分布 - 条形图', fontsize=14, fontweight='bold')
        plt.xlabel(column, fontsize=12, fontweight='bold')
        plt.ylabel('频数', fontsize=12, fontweight='bold')
        plt.xticks(rotation=45, ha="right", fontsize=10)  # 如果标签太长，旋转它们
        plt.tight_layout()  # 自动调整布局
        plt.grid(axis='y', linestyle='--', alpha=0.7)  # 添加网格线
        plt.show()
    else:  # 否则使用饼图
        counts.plot(kind='pie', autopct='%1.1f%%', startangle=90)
        plt.title(f'{column} 频数分布 - 饼图', fontsize=14, fontweight='bold')
        plt.ylabel('')
        plt.tight_layout()  # 自动调整布局
        plt.legend(loc='best', fontsize=10)  # 添加图例
        plt.show()
